home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Arsenal Files 1
/
The Arsenal Files (Arsenal Computer).ISO
/
os2_app
/
ctc0007.txt
< prev
next >
Wrap
Text File
|
1994-03-05
|
44KB
|
660 lines
C Set ++ Compiler Version 2.0
Fixes List
-----------------------------
*************************************************************************
* *
* This CSD contains fixes that are common to C/C++ Tools Version 2.0 *
* and Version 2.01. Notwithstanding the version statements *
* contained in the files of this CSD, this is not an upgrade of *
* Version 2.0 to Version 2.01. *
* *
* The code to which you have access is determined by the version of *
* the software to which you are licensed. *
* *
*************************************************************************
=========================================================================
CTC0007 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0007
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ11951 BE & CFE The optimizer misses a chance to inline
certain C++ functions.
-------------------------------------------------------------------------
PJ11979 CFE In source code:
int main (void) {
int a, b; b = 1; a = 2; return 0;
}
The symbols for a and b are generated in a
different order depending on whether /Ti is
on. They should be generated in the same
way no matter what the /Ti setting is.
-------------------------------------------------------------------------
QUAL-IMP CFE When /La compiler option is used, some of the
structures and unions are incorrectly shown
in the listing
-------------------------------------------------------------------------
PJ12108 CRT Library fixes made to solve problems when
debug allocated objects were freed with
non-debug routines and vice-versa.
In addition the environment variable
DDE4_HEAP_SKIP was added whereby the user can
skip the _heap_check that occur when debug
routines are invoked. The syntax is as
follows:
set DDE4_HEAP_SKIP=increment,starting
where: 'increment' is how often a
heap_check will be invoked, and 'starting'
(which is optional) is how many calls to
debug memory routines must occur before
heap_checks are done.
Example: DDE4_HEAP_SKIP=100,1000
will perform a heap_check after 1000 debug
memory routines have been called and on every
100 calls after that.
Example: DDE4_HEAP_SKIP=50
will perform a heap_check on every 50 calls
made to a debug memory routine
Note: If DDE4_HEAP_SKIP is not set in the
environment then the default will be to
invoke heap_check on every call to a debug
memory routine.
=========================================================================
CTC0006 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0006 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ11896 BE Optimization Problem: A for loop that
functions like a memcpy() could be
incorrectly optimized if the source of the
copy is a struct member.
-------------------------------------------------------------------------
PJ11952 BE Optimization Problem: An internal problem
with expression simplification could result
in incorrect code generation.
-------------------------------------------------------------------------
PJ11953 BE Optimiation Problem: Within an inner switch
of nested switches, a goto jumping to a break
for the outer switch could be turned into a
break for the inner switch.
-------------------------------------------------------------------------
PJ11975 BE Optimization Problem: Statements of the form:
"if (f1 < f2) i++", where f1 and f1 have
floating-point datatypes, could cause a
compile-time exception in the BE.
-------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: MOD operations could
generate results of the wrong sign if both
operands are negative. Similar results could
occur for MOD and DIV by a negative power of
2.
-------------------------------------------------------------------------
QUAL-IMP BE Fixed a small problem with the generated
assembler listing file - an incorrect symbol
could be used.
-------------------------------------------------------------------------
PJ11872 C++FE Fixed a trap in the C++ frontend. The trap
occurred when we tried to compile a source
file that contained a class that had 2
declarations of the same friend function and
a typedef for that function.
-------------------------------------------------------------------------
PJ11887 C++FE Fixed a trap when compiling code with a
definition of a function with _Far16 _Pascal
linkage.
-------------------------------------------------------------------------
PJ11981 C++FE If a conversion function yields a reference
to a class with constructors, and a temporary
is built from the result of that conversion,
the temporary is initialized by bitwise
copying instead of by calling its copy
constructor.
-------------------------------------------------------------------------
PJ11982 C++FE The compiler will deliberately not inline
some functions if doing so would break C++
exception handling. However, when exception
handling is disabled by /Gx+, the compiler
still fails to inline those functions.
-------------------------------------------------------------------------
PJ11983 C++FE A complex expression containing more than one
conditional subexpression (i.e. the x ? y :
z construct) may be generated such that the
subexpressions are evaluated in the wrong
order.
-------------------------------------------------------------------------
PJ11984 C++FE An inline function consisting of a single
return statement that returns a
type-converted parameter may be incorrectly
inlined.
-------------------------------------------------------------------------
PJ11881 CFE Sizeof typedef within sizeof sometimes
returns arbitrary value.
-------------------------------------------------------------------------
PJ11929 CFE If the argument list of a macro is supplied
via another macro, the macro might not be
expanded as expected.
-------------------------------------------------------------------------
PJ11889 CRT If the function that executes when a thread
begins execution calls 16-bit code, then
EDCThunkProlog is called from within the
function prolog. EDCThunkProlog tries to
access data that is outside the stack frame,
and since this is the first frame on the
stack, that storage is not allocated to the
stack. A protection exception occurs.
=========================================================================
CTC0005 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0005 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11625 BE Optimization Problem: Compiling source that
contains floating-point code could cause a
compile-time trap in the backend.
------------------------------------------------------------------------
PJ11688 BE Optimization Problem: Statements of the form
"do { i++; } while (condition); i--;" could
be incorrectly optimized.
------------------------------------------------------------------------
PJ11692 BE Incorrect debug info could be generated for a
data member of a class with type "char *
const".
------------------------------------------------------------------------
PJ11695 BE Optimization Problem: Instruction scheduling
could clobber the result of constant multiply
across a call.
------------------------------------------------------------------------
PJ11696 BE Optimization Problem: Using an int variable
as an array of chars within a loop could
result in incorrect code generation.
------------------------------------------------------------------------
PJ11697 BE Optimization Problem: Statements of the form
"while (cond) { if (--i) { i++; break; } }"
could be incorrectly optimized.
------------------------------------------------------------------------
PJ11698 BE Optimization Problem: If the "count" paramter
of strncat() is a builtin string function,
incorrect code could be generated.
------------------------------------------------------------------------
PJ11699 BE Optimization Problem: Tail calling a _Pascal
function from another function could result
in an exception at run-time.
------------------------------------------------------------------------
PJ11701 BE strncat() could copy one byte even if "count"
parameter is a variable of value 0.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: Adding two negative
numbers and then negating the result could be
optimized incorrectly.
------------------------------------------------------------------------
QUAL-IMP BE Without optimization, an expression of the
form "*((char*)&array╒index■+i)" could
generate an incorrect OBJ even though the
ASM is correct.
------------------------------------------------------------------------
PJ11491 C++FE new() is not returning a valid pointer when
allocating a 0-sized array.
------------------------------------------------------------------------
PJ11492 C++FE The delete() operator for an object was not
being called with the debug parameters when
that object was being deleted because its
constructor threw an exception.
------------------------------------------------------------------------
PJ11574 C++FE Reduce the long link times and large swapper
file created when linking C++ programs that
contain templates.
------------------------------------------------------------------------
PJ11575 C++FE If a virtual base class appears more than
once in the class hierarchy, then one copy of
if may be initialized several times and the
other copies not initialized.
------------------------------------------------------------------------
PJ11584 C++FE The compiler may crash when generating debug
information for a class that has no
user-supplied nor compiler-generated inline
functions. This is rare, since there are
usually some compiler-generated ones.
------------------------------------------------------------------------
PJ11585 C++FE If a C++ compilation includes definitions of
classes that contain virtual functions, all
of which are inline functions, the compiler
will generate those classes and functions
whether or not they are actually used. This
fix generates them only when necessary
------------------------------------------------------------------------
QUAL-IMP C++FE A C++ program containing a brace-enclosed
statement block outside of a function body
crashes the front-end when compiled with
/Wuse+ if there is an unused label define
in the block
------------------------------------------------------------------------
QUAL-IMP C++FE A goto within a catch block is incorrectly
diagnosed as a jump into the catch block,
which is illegal since it bypasses
initialization of the catch variable
------------------------------------------------------------------------
QUAL-IMP C++RT Fixed memory leak that occurred when memory
is allocated for an object however, it is not
constructed because it's constructor threw an
exception.
------------------------------------------------------------------------
PJ11702 CFE The compiler is not recognizing a constant
expression properly when initialization
involves an array within a structure within
an array of structures
------------------------------------------------------------------------
PJ11703 CFE Using CSD 1 of C Set ++, the test case is
expected to have a warning message, but the
compiler should not be trapping.
------------------------------------------------------------------------
PJ11686 CRT The problem lies in reading across memory
blocks. The code did not take into account
of the number of characters read in from the
previous blocks and hence reading more than
necessary.
------------------------------------------------------------------------
PJ11687 CRT AL register will now be set by the library
when making a call to DosGetMessage.
=========================================================================
CTC0004 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0004 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11127 BE Optimization Problem: Multiplying a variable
by a constant and the adding or subtracting 1
could result in incorrect code generation.
------------------------------------------------------------------------
PJ11128 BE Optimization Problem: An internal problem
could result in traps or unexpected results
with 32 to 16 or 16 to 32 code.
------------------------------------------------------------------------
PJ11129 BE Optimization Problem: In rare circumstances,
doing arithmetic with shorts could result in
traps or unexpected results.
------------------------------------------------------------------------
PJ11134 BE Optimization Problem: The result of a right
shift of a negative value, though
implementation defined, could differ at /O-
and /O+.
------------------------------------------------------------------------
PJ11135 BE Optimization Problem: The backend could abort
with fatal error EDC4005 in intermediate file
ROOPT when optimizing an if-then-else.
------------------------------------------------------------------------
PJ11137 BE Optimization Problem: Expressions of the
form: "*(float *) &var", where var is an int,
could cause a compile-time back-end trap.
------------------------------------------------------------------------
PJ11138 BE Optimization Problem: An internal problem
occuring when compiling floating-point code
could cause a compile-time back-end trap.
------------------------------------------------------------------------
PJ11139 BE Incorrect code could be generated when
negating a char variable and then storing the
result into an int variable.
------------------------------------------------------------------------
PJ11140 BE Optimization Problem: Statements of the form:
"x--; if (cond) x += 2;" may be incorrectly
optimized.
------------------------------------------------------------------------
PJ11141 BE Run-time traps could occur in code using 16
to 32 callback functions if the code crossed
a 64K boundary.
------------------------------------------------------------------------
PJ11142 BE When using strncat(), an extra NULL was being
appended to the end of the destination string
if the length of the source string was less
than "n".
------------------------------------------------------------------------
PJ11143 BE Optimization Problem: Statements of the form:
"if (!x) {y = 0;} else {y = 1;}" could cause
a compile-time trap if x is a float-point
type.
------------------------------------------------------------------------
QUAL-IMP BE Under certain conditions, the optimizer could
leave around some useless LEA instructions.
This has now been fixed.
------------------------------------------------------------------------
QUAL-IMP BE When exporting callback functions, an
incorrect symbol could be used, resulting in
link errors.
------------------------------------------------------------------------
PJ11176 CFE Compiler generates incorrect code for
referencing array of array in structure
with array index of 0.
ie: a.b╒i■╒0■.c = 1; a.b╒i■->c = 2;
------------------------------------------------------------------------
PJ11177 CFE If a variable is first declared and then
initialized both with a typedef type and
a qualifier, the compiler generates incorrect
code.
ie: const typedef_name var;
const typedef_name var = 0;
------------------------------------------------------------------------
PJ11179 CFE When initializing a member of a structure
casting the member to _Seg16 pointer causes
unexpected compiler error.
------------------------------------------------------------------------
PJ11180 CFE When #pragma handler is specified for some
functions, the compiler randomly generates
incorrect code that exports some of those
functions.
------------------------------------------------------------------------
PJ11181 C++FE The following message is produced when both
sides of a conditional expression are the
same:
recoverable EDC4005: Error occured in
intermediate file RBEXPR(4902)
------------------------------------------------------------------------
PJ11182 C++FE An initialized function-scope static variable
will cause the C++ front end to GPF if a
compiler temporary is required when
evaluating the initializing expression.
------------------------------------------------------------------------
PJ11183 CRT FILE struct members violate user name space.
------------------------------------------------------------------------
PJ11185 CRT MATHERR not handling domain errors.
=========================================================================
CTC0003 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0003 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ10704 BE Incorrect debug information could cause IPMD
to trap in DDE4BE32.DLL while debugging C++
programs.
------------------------------------------------------------------------
PJ10705 BE Incorrect debug information for const member
functions could cause expression evaluation
problems in IPMD.
------------------------------------------------------------------------
PJ10706 BE Incorrect debug information could cause IPMD
to hang when debugging large programs.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect debug information could confuse
IPMD while debugging C++ programs.
------------------------------------------------------------------------
PJ10461 CRT Serialization code used in the runtime
library may cause system traps. This
usually occurs when one of the thread
unexpectedly terminates.
------------------------------------------------------------------------
PJ10703 C++RTL CPPFILT utility truncates the mangled
function names if it is greater than 233
characters.
=========================================================================
CTC0002 is formal Corrective Service
The following fixes are provided in Compiler CS CTC0002 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ10544 BE Optimization Problem: Compiling with /G5 /Ms
may optimize SUB ESP,4 into PUSH EAX at
inappropriate places.
------------------------------------------------------------------------
PJ10545 BE Incorrect code may be generated when copying
structures whose size is less than 12 bytes.
------------------------------------------------------------------------
PJ10546 BE Optimization Problem: An internal problem
during common subexpression elimination could
cause a compile-time exception.
------------------------------------------------------------------------
PJ10547 BE Optimization Problem: Incorrect code
generation may result when optimizing a loop
that contains a goto which acts like a break.
------------------------------------------------------------------------
PJ10549 BE Optimization Problem: Instruction scheduling
may move instructions out of the protected
area between _disable and _enable.
------------------------------------------------------------------------
PJ10550 BE Optimization Problem: Returning a floating
point value as an integer may cause problems
on machines without FP co-processors when
compiled with /O and either /G4 or /G5.
------------------------------------------------------------------------
PJ10552 BE The enum data offset field of a COMDAT placed
in a user segment was being set to a non-zero
value.
------------------------------------------------------------------------
PJ10553 BE Optimization Problem: An internal problem
could cause a compile-time trap when
compiling with /O+ /Gf+.
------------------------------------------------------------------------
PJ10556 BE The BE was not growing the number of file
handles available. This caused a
compile-time exception when the BE ran out of
file handles.
------------------------------------------------------------------------
PJ10557 BE Optimization Problem: Calling a 32-bit
function from the last statement of a _Far16
_Pascal function could be compiled
incorrectly.
------------------------------------------------------------------------
PJ10558 BE Optimization Problem: The incorrect register
may be cleared when returning 0.
------------------------------------------------------------------------
PJ10559 BE A constant left-shifted by another constant
may be folded incorrectly when compiled with
/Gi.
------------------------------------------------------------------------
PJ10560 BE Optimization Problem: Tail call optimization
was being incorrectly applied to a call to a
pascal linkage function from a system linkage
function.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: Bad register selection
around switch statements could cause
incorrect code generation.
------------------------------------------------------------------------
QUAL-IMP BE With C++, returning a complex structure from
a function whose destructor has been inlined
could be compiled incorrectly.
------------------------------------------------------------------------
QUAL-IMP BE An internal problem could cause a
compile-time trap when compiling, with /Gr
/Rn, a _Far32 _Pascal function that returns a
pointer.
------------------------------------------------------------------------
PJ10478 CFE The preprocessor was getting an internal
compiler error for certain macro expansion.
------------------------------------------------------------------------
PJ10477 CFE If a source/header file contains null
characters, the compiler gets an internal
compiler error and may result in a huge
swapper that may bring down your system.
------------------------------------------------------------------------
QUAL-IMP CFE Error message was being erroneously issued
when '_Export" keyword or '#pragma export'
are specified more than once for the same
object.
------------------------------------------------------------------------
PJ10566 C++FE Conversion function results in an
unconstructed temporary. No constructor was
called for the temporary object.
------------------------------------------------------------------------
PJ10567 C++FE When passing a class as a by value parameter
a temporary is not used and the class is
passed by reference.
------------------------------------------------------------------------
PJ10568 C++FE Member friend incorrectly inherits function
linkage from linkage specifier.
------------------------------------------------------------------------
PJ10569 C++FE Invalid Error message EDC3458 produced.
------------------------------------------------------------------------
PJ10570 C++FE GPF calling virtual member function of a
template class when the module uses #pragma
data_seg.
------------------------------------------------------------------------
PJ10571 C++FE Invalid error for postfix operator ++ on a
reference in a conditional expression.
------------------------------------------------------------------------
PJ10572 C++FE Invalid error message EDC3276 and GPF when
compiling a conditional expression.
------------------------------------------------------------------------
QUAL-IMP C++FE Runtime GPF accessing static data member
at location 0.
------------------------------------------------------------------------
QUAL-IMP C++FE /Ms causes a runtime GPF when exception
handling is used.
------------------------------------------------------------------------
PJ10462 CRT Thunk Prologue incorrectly probes stack
causing system traps. This may occur
with any 32-16 calls not in thread one.
------------------------------------------------------------------------
QUAL-IMP CRT Free not handling debug object. An debug
memory object (as allocated by the debug
memory routine) can cause system trap
after it is passed to the regular free()
function for freeing.
------------------------------------------------------------------------
QUAL-IMP CRT Spawn/Exec family functions should ignore
net error. If the net error is not ignored,
the search on the PATH stops prematurely,
which may cause spawns/exec functions not to
find any program whose path appears
after the net work path causing the error.
------------------------------------------------------------------------
QUAL-IMP UTIL Compiler dialog did not parse a file when the
file contains a '//' comment. It ignored
lines after the '//' character until a blank
line is reached.
------------------------------------------------------------------------
QUAL-IMP UTIL Dialog did not free up memory when saving
or retrieving information to/from the project
file extended attribute.
=========================================================================
CTC0001 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0001 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ09575 DOC Hitting Ctrl H in EPM for contextual help
did not work for printf or scanf. A change
was made in the DDE4CLIB.NDX file..
------------------------------------------------------------------------
QUAL-IMP ICC When /Fa compilation switch was used to
create assembler file, and a template file
was compiled, the compiler trapped.
------------------------------------------------------------------------
QUAL-IMP ICC Added the description of /Tm option to ICC
help.
------------------------------------------------------------------------
PJ09573 FE Fixed the compiler to disallow illegal
initialization of two-dimensional array
of char with character string without braces.
------------------------------------------------------------------------
PJ09574 FE Structure initialization failed with an
extra set of braces.
------------------------------------------------------------------------
QUAL-IMP FE Usage of _Export keyword caused the compiler
to fail.
------------------------------------------------------------------------
QUAL-IMP UTIL Beta project causes Workframe to trap.
------------------------------------------------------------------------
QUAL-IMP UTIL Update English panels to fix a Japanese
VGA screen.
------------------------------------------------------------------------
QUAL-IMP UTIL Remove the minimize capability of the
notebook dialog.
------------------------------------------------------------------------
QUAL-IMP UTIL No keyboard focus when the notebook dialog
first appears.
------------------------------------------------------------------------
QUAL-IMP UTIL Incorrect focus when Alt key is pressed
inside a dialog.
------------------------------------------------------------------------
QUAL-IMP UTIL /Xc should not generate any command line
include paths.
------------------------------------------------------------------------
QUAL-IMP C++FE The /Ms option is changing the linkage of
internally declared compiler functions.
This can result in runtime traps when using
memory management or C++ exception handling.
------------------------------------------------------------------------
QUAL-IMP C++FE The linker fails when using /ND to rename
a data segment. The compiler is generating
bad code for partially initialized
structures.
------------------------------------------------------------------------
QUAL-IMP C++FE Using the compiler options /La or /Lb causes
the compiler to trap.
------------------------------------------------------------------------
PJ09576 C++FE Linking a program that contains templates
causes an invalid error to be generated by
lib.exe. The error is "LIB0007: Error :
Unable to open D:\00900000.6.OBJ"
------------------------------------------------------------------------
PJ09577 C++FE Large program with many template functions,
(more than 1023), traps at runtime.
------------------------------------------------------------------------
PJ09578 C++FE When linking programs that contain templates
and object files that were generated by TASM
the message: "Unknown Record Type {ox..},
offset {..} is generated.
------------------------------------------------------------------------
PJ09579 C++FE The compiler is incorrectly resolving to a
function template instead of using a
previously declared member function.
------------------------------------------------------------------------
PJ09580 C++FE Object destructors are not always run after
a throw statement.
------------------------------------------------------------------------
PJ09581 C++FE Compiling code that uses _Far16 and _Pascal
keywords causes an internal compiler error:
"Exception #C0000005: 30751 occurred in
file .., function .."
------------------------------------------------------------------------
QUAL-IMP C++RT Incorrectly handling exceptions in multiple
runtime environments.
------------------------------------------------------------------------
PJ09568 BE Compiling source files with the same names
may result in conflicting BSS static areas.
------------------------------------------------------------------------
PJ09570 BE Optimization Problem: Incorrect code could be
generated when the result of a comparison is
subtracted from a variable.
------------------------------------------------------------------------
PJ09571 BE The debug info could become corrupted in very
large files which results in only assembler
view being available within IPMD.
------------------------------------------------------------------------
PJ09572 BE Optimization Problem: An internal problem
during loop optimizations could cause a
compile-time exception in the back-end.
------------------------------------------------------------------------
PJ09569 BE Optimization Problem: Incorrect code could be
produced for loops ending with an
if-then-else where the last statement of the
else is a break.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem in
store removal could cause incorrect code.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem
may cause a compile-time exception in the
back-end.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect code generation for _Far16 _Pascal
functions that return floating-point types
could cause a run-time exception.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem,
when compiling with /Ti+, may cause incorrect
code generation for breaks within loops.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: The optimizer was
incorrectly folding (0 / x) and (0 % x).
------------------------------------------------------------------------
QUAL-IMP BE Casting a floating-point value to int and
then comparing the result to another int that
was previously cast from a floating-point
value may produce incorrect results.
=========================================================================